#include "Reactor.hpp"
#include "Listenner.hpp"

// 对于一款服务器，首先要给端口号
// ./select_server 8080
int main(int argc, char* argv[])
{
    if(argc != 2)
    {
        std::cout << "Usage: ./server_select port" << std::endl;
        return 1;
    }
    ENABLE_CONSOLE_LOG();
    uint16_t local_port = std::stoi(argv[1]);
    Reactor reactor;

    // Listenner listen(local_port);  // 完成具体工作的模块，也有一个listensockfd
    // 我们要把listensockfd，封装成一个Connection，让Connection帮我们托管给EpollServer
    // 初始化回调方法：listensockfd只关心读，写和异常都置为nullptr
                                                        // 以ET模式设置读事件
    // auto conn = Factory::BuildConnection(listen.Sockfd(), EPOLLIN | EPOLLET, [&listen](){ listen.Accepter(); }, nullptr,nullptr);
    auto conn = std::make_shared<Listenner>(local_port);

    reactor.InsertConnection(conn);
    reactor.Loop(); 

    return 0;
}